任意のバイオインフォマティクスツールを詰め込んだコンテナイメージが簡単に作成できる Seqera Containers
Seqera Containers は、必要なバイオインフォマティクスツールを簡単に詰め込んだコンテナイメージを作成できます。Web 画面から Bioconda のパッケージを選ぶだけで、オリジナルのコンテナイメージをすぐに利用できます。しかも、無料で利用可能です。
こちらのサービスは AWS HPC Blog と HPC Tech Shorts チャンネルでも紹介されています。
- Announcing: Seqera Containers for the bioinformatics community | AWS HPC Blog
- Announcing Seqera Containers - supported by AWS - YouTube
- Nextflow, Seqera containers, and Arm support for bioinformatics - YouTube
これらの内容と私が調査した内容をまとめました。
Seqera Containers とは
まず Wave について
Wave は Seqera プラットフォームの一部でデータアナリティクス向けに設計されたプロダクトです。
Wave は、Conda ベースのコンテナイメージの作成や配布が可能なオープンソースアプリケーションです。
Bioconda、Spack、pypi でインストール可能なパッケージを選び、オリジナルのコンテナイメージを生成できます。
Apptainer のコンテナイメージに対応
コンテナイメージの生成は Docker と Apptainer(Singularity)に対応しています。これは最近の HPC の利用状況を反映しています。
Arm64 のコンテナイメージに対応
Arm64 をサポートするパッケージに限定されますが、Arm64 向けのコンテナイメージを生成できます。もちろん x86-64 コンテナイメージも生成可能です。
つまり、Graviton プロセッサーで動作可能なバイオインフォマティクスツールのコンテナイメージが手に入ります。
Wave の動作環境
開発環境では Docker エンジンでコンテナを起動できます。本番環境では Kubernetes が必要です。Kubernetes を運用していない場合、ハードルが高いかもしれません。
本番運用するときの動作環境のハードルの高さがわかったところで、Seqera Containers に話は戻します。
Seqera Containers は Wave のパブリックホスト型のサービス
Wave の実行環境は、Seqera Containers というパブリックサービスとして提供されています。Web UI からイメージをビルドし、コンテナイメージを配布するリソースまで、すべて Web ブラウザから利用可能です。
ユーザーは Web 画面から必要なパッケージを選択するだけで、Dockerfile または Singularity レシピの作成して、イメージのビルドし、レジストリへの登録を自動行ってくれます。出来上がったコンテナイメージを Pull すれば、あとは自由に使えます。
基本はオンデマンドビルド
基本的にはオンデマンドでコンテナイメージのビルドを行います。ビルドキャッシュは 72 時間保持されます。
実際に試した感じですと同じイメージのビルドはすぐ終わるため、キャッシュ使わている感じはします。
イメージの保存期間
Wave Community registry では、イメージを最低でも 5 年間保持します。
Wave Community registry at least for 5 years since their creation. 引用: https://seqera.io/containers/#:~:text=How%20long-,will,-images%20last%3F
どうして無料で使えるのか不思議でならない
Kubernetes の運用費やストレージ代を考えると、無料で利用可能なのが不思議です。答えは、単純で AWS から提供されているクレジットで賄っているからでした。サービスのインフラの費用は AWS クレジットで補填されれても、Kubernetes を含めサービスを運用しているエンジニアは Seqera が抱えているのでしょう。有償のプランも用意されていますしね。
Seqera と AWS がコラボレーションした結果、Seqera Containers というサービスが誕生しました。
コンテナイメージを作成してみた
実際に Seqera Containers を使ってコンテナイメージを作成しました。サインアップせずにゲストユーザーでアクセスしました。
Web ブラウザ上での操作
Trinity
で検索し、追加してみます。
次に Busco
で検索し、追加してみます。こちらは Arm64 にも対応していますね。
最後に S3 へデータを退避できるコマンドがあればと思い検索すると用意されていたので追加してみます。
せっかくなので Singularity を選択して、Apptainer で動作確認することにします。
アーキテクチャは選択したパッケージすべてが Arm64 対応ではなかっため、AMD64 にします。
Get Container をクリックするとコンテナイメージのビルドが走ります。
なにか始まりました。View build details をクリックして詳細を確認してみます。
ビルド中のログを確認できました。
しばらく待つとビルド完了しました。
ビルドしたイメージをダウンロードするためにはどうするかというと、表示されているoras://
の URL をコピーします。
サーバーなどの実行環境上での操作
EC2 で起動した Ubuntu 22.04 に Apptainer をインストールした環境でコンテナイメージを利用してみます。
apptainer pull
コマンドでイメージをダウンロードします。
Seqera Containers からローカルへ保存できました。
$ ls -lh busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif -rwxrwxr-x 1 ubuntu ubuntu 1.7G Jun 2 07:13 busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif
コンテナを起動しログインしてみます。
$ apptainer shell busco_trinity_pip_aws-s3-cli_4ba1f6af3e72cc2b.sif
Trinity も Buscoo バージョン確認だけですが、コマンドが実行可能な状態になっています。
Singularity> Trinity --version Trinity version: Trinity-v2.15.1 -currently using the latest production release of Trinity. Singularity> busco --version BUSCO 5.7.1
Seqera Containers で作成したコンテナイメージは問題なくローカルで実行可能でした。また、Dockerfile や、Apptainer レシピを自分で一切書くことなくコンテナイメージの作成は Web UI から作成でき大変便利です。
ビルドログから裏側を推測
ビルドログを眺めていて気になって調べたことをまとめておきます。
コンテナイメージは何が使われているのか
以下は Docker イメージ指定でイメージをビルドしたときのログです。ベースイメージはmambaorg/micromamba
ということがわかりました。
FROM mambaorg/micromamba:1.5.8-lunar COPY --chown=$MAMBA_USER:$MAMBA_USER conda.yml /tmp/conda.yml RUN micromamba install -y -n base -f /tmp/conda.yml \ && micromamba install -y -n base conda-forge::procps-ng \ && micromamba clean -a -y USER root ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH"
mambaorg/micromamba とは
conda を C++ で再実装した mamba というパッケージマネージャがあり、それの完全な静的リンクになった自己完結型の実行ファイルになったものでした。
- Micromamba Installation — documentation
- Micromamba User Guide — documentation
- mamba-org/mamba: The Fast Cross-Platform Package Manager
現時点では micromamba は Debian 12.5 の軽量なイメージ(debian:bookworm-slim
)に載せたものがベースのコンテナイメージとして利用されていました。
- micromamba-docker/Dockerfile at main · mamba-org/micromamba-docker
- mambaorg/micromamba - Docker Image | Docker Hub
つまり、軽量版の conda(micromamba)が動作する Debian 12.5 をベースにして、各種バイオインフォマティクスツールが動作するコンテナでした。
Wave Community registry の実態は
AWS 提供のクレジットということもあり、当然 ECR が使われていました。
リージョンはアイルランド(eu-west-1
)とやや珍しいところに置かれていました。
─────────────────────────────────────────────────────────────────────────── Total size: 833MB Cleaning tarballs.. Cleaning packages.. INFO[0159] Taking snapshot of full filesystem... INFO[0244] Pushing layer 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache:f99cce0ac2602f10a8940489de9744f2bec0c76b422962b41e40739c987e1a11 to cache now INFO[0244] Pushing image to 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache:f99cce0ac2602f10a8940489de9744f2bec0c76b422962b41e40739c987e1a11 INFO[0247] USER root INFO[0247] Cmd: USER INFO[0247] No files changed in this command, skipping snapshotting. INFO[0247] ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH" INFO[0247] No files changed in this command, skipping snapshotting. INFO[0295] Pushed 195996028523.dkr.ecr.eu-west-1.amazonaws.com/wave/build/cache@sha256:09ac77106fb4ea34d91e4fae2b5ca5e92cbe81c5af5a34d60ce583870aa8ceaa INFO[0295] Pushing image to community.wave.seqera.io/library/trinity:2.15.1--3db30c4df6de4fe8
seqera 社の所在地
本社はスペイン、アメリカにもオフィスがありました。本社寄りではありますが、スペインリージョンではなく、アイルランドリージョンを選択している理由はわかりませんでした。
バイオインフォマティクスはヨーロッパが進んでいるイメージがあり、やはり本社はヨーロッパかという感想です。
まとめ
Seqera Containers は、バイオインフォマティクスツールのコンテナイメージ作成を簡単にしました。Dockerfile や、Apptainer レシピを書くことが本質的ではない研究者にとって、Web ブラウザからの操作で済むのは画期的ではないでしょうか。
おわりに
AWS のクレジットで運用されていますが、コンテナイメージなので当然 AWS 以外でも自由に使うことができます。オンプレや、他クラウドベンダーであっても使えるので一度試してみください。